1. Field of the Invention
This invention relates to a system of computers in which at least one computer is able to access files, including both executable files and data files, located in one or more other computers.
2. Background Art
The amount of software available to users is already so great that few can keep track even of what is being offered in any given market segment. To further complicate matters, even well-known and widely distributed software applications are sometimes upgraded so often that consumers are unwilling or unable to buy the latest version.
Another trend that is known to most modern computer users is that the applications themselves are becoming larger and larger, requiring more and more memory space, while often containing many features that only a few users ever care to use. This is usually not a problem for users whose desktop and laptop computers are relatively new, because the size of the memory and storage devices in these systems is typically more than adequate for loading and running the desired applications. On the other hand, the market for small, even hand-held, computers is growing, and many popular applications cannot be loaded into the small memories of these devices. Moreover, the border between traditional computers and devices such as mobile telephones is becoming less clear, as more and more software unrelated to voice communication per se, for example, network access and display applications, is being included within the telephones themselves.
One proposal that allows a user of a local computer system to access and use files (both executable files and data files), in particular, applications, residing in a remote system is for the local system to be a so-called xe2x80x9cdumb terminalxe2x80x9d that is connected to a more powerful central computer or network of computers. In this scheme, each user""s local computer includes a simple operating system and a network connection but has few, if any, installed applications. Instead, the applications are installed only in the central computer, and users run the applications remotely. In other words, users select applications to run, submit data and commands as necessary, and view results on a local display, but actual processing occurs primarily or exclusively in the central system the executable code of any given application is never loaded into any user""s local computer.
One disadvantage of the xe2x80x9cdumb terminalxe2x80x9d approach relates to security: Because the user""s data is transferred for processing to the central system, the user must be able to trust that system, as well as the channel connecting the user""s local computer to the central system. Another disadvantage of this known arrangement is that the user is able to select from and access only those applications that are installed in the central system. If, for example, an upgraded version of some application is not centrally installed, then the user simply cannot access and benefit from it.
These disadvantages also affect remote access of pure data. For example, users may wish to examine or analyze portions of a large amount of data, or at least some data set that for other reasons is preferably stored remotely. This might be for the purposes of data mining, or for other conventional forms of data processing and display. In some cases, the whole data base (for example, the human genome) may be far too large to be stored within the user""s local computer; similarly, transfer of the entire data base over the channel connecting the user""s computer to the data base may be too slow.
Another common way for a user to remotely access both software and data is simply for the user to download the entire desired program (or data base) from a provider. Indeed, as network bandwidth and data transfer rates increase, downloading of software is rapidly becoming a preferred method for acquiring new software products and upgrades, replacing the traditional methods of ordering and physically loading files from a CD ROM disk.
One disadvantage of the currently available system of downloading is that it forces users to buy or at least download large programs or entire software packages, even though they may need only a small portion of their capabilities, or may need the software only for a limited time. Many users therefore prefer to save money and not to install the program at all.
Another disadvantage of existing downloading options is that they assume that there is enough memory in the user""s machine to install and operate the software. In general, this assumption is justified, because the memory capacity of new computers tends to grow along with the memory requirements of new software. On the other hand, not everyone has the newest computer. Moreover, there is a separate development in the field of computers, whereby generalized computing hardware and software are being included in ever smaller portable devices such as hand-held or xe2x80x9cpalm-topxe2x80x9d computers and even in mobile telephones. These devices often do not have the memory capacity to load and run standard versions of popular software packages.
One way to allow users of relatively smaller capacity computing devices such as palm-top computers to run software designed primarily for larger capacity machines is to modify, in particular scale down, the software to fit the resources of the smaller capacity devices. By definition, this means that users of such modified software will not have access to the full range of features of the software.
Downloading of applications also presents problems for software vendors, who worry about unauthorized copying. Such piracy is bad enough where applications are delivered on a physical medium such as a compact disk (CD), but is potentially even worse where a user has downloaded an application. Having legally downloaded one copy of the software, a software pirate could either copy (xe2x80x9cburnxe2x80x9d) the software into several CD""s, or could in turn make the software available to other unauthorized users through downloading from the pirate""s computer.
What is needed is an arrangement that allows a user to access and run, in real time, a potentially arbitrarily large number of applications and/or data that are installed or stored remotely. The arrangement should allow the user to retain local control of the execution of the applications and of the processing of potentially sensitive data. Ideally, the arrangement should be usable even in local computer systems that may themselves not have enough storage and memory space to load a desired application""s code, or in other situations where the user chooses not to load the application. No scaling down or other modification of the software should be required; in other words, even users with a small-capacity computing device should ideally be able to access the same full range features available to users with larger capacity machines. The arrangement should also make it at least more difficult, and preferably impossible, to create unauthorized copies of applications. This invention provides such an arrangement.
The invention provides a method and an associated system for accessing at least one file, such as a whole or partial application, a data set, or any combination of blocks of executable code and/or valid data. Each file is stored within at least one provider system and each file has at least one separately processable file portion.
Requests for access to selected ones of the separately processable file portions are issued by a user system, which is connected to the provider system by a network. These selected file portions are then separately transferred from the provider system to the user system, which includes a local storage device such as a user disk. The user system can then separately process each transferred, separately processable file portion, for example, by executing the code or analyzing the data in the transferred file portion(s).
Each separately processable file portion will normally comprise both file structure information and processable content. Only the file structure information of at least one of the separately processable file portions is initially installed in the user system.
For each installed file portion, a skeleton generation module within the user system then creates an access structure. The access structure includes the file structure information for the respective file portion, as well as access information, which includes a locator indicating a storage location where the corresponding file portion""s processable content is stored. Upon each request for access to the processable content of any of the file portions, a transfer request that includes the corresponding locator is then issued by a streaming control module in the user system and is forwarded to the provider system (or some other intermediate storage system) identified by the locator. The processable content of the requested file portions is then retrieved into the user system from the storage location.
One advantage of the invention is that there is no need to modify the version of the application stored within the provider system. An installer is therefore preferably installed within the provider system. This installer generates from the unmodified form of the file in the provider system an installation image of the file; the image includes, for each file portion, the file structure information, as well as an installation flag, but not the processable content of at least one (and preferably all) of the file portions. A streaming control module within the user system then initially installs only the file structure only when the installation flag is in an on state.
One advantage of the invention is that there is no need to modify the version of the application stored within the provider system. An installer is therefore preferably installed within the provider system in order to generate from the unmodified form of the file in the provider system an installation image of the file. The image includes, for each file portion, the file structure information, as well as an installation flag, but not the processable content of at least one (and preferably all) of the file portions. A streaming control module within the user system then initially installs only the file structure only when the installation flag is in an on state.
In order to eliminate or at least reduce the need to transfer file portions more than once, the streaming control module (or some equivalent mechanism) preferably stores, at a respective local storage address within the user system, a cached copy of the processable content of each preciously downloaded file portion. The streaming control module then sets the locator in the corresponding access structure to the local storage address. Upon each subsequent request for access to the processable content of any of the cached file portions, processable content of the cached file portions is then retrieved from the local storage address.
The user-side components of the invention are preferably implemented in a virtual machine (VM), which is installed within the user system. The VM has a virtual operating system, a virtual processor, and a virtual storage disk. A virtual machine monitor (VMM) is then preferably installed as an interface between the VM and a host operating system of the user system. The file structure information of the separately processable file portions is then stored in the virtual storage disk. All requests for access to the separately processable file portions then issue via the virtual operating system and all transferred, selected, separately processable file portions are processed by the virtual processor. The VMM intercepts and handles all requests for access issued by the virtual operating system in the virtual machine monitor. Transfer of all separately processable file portions from the provider system thereby remains transparent to a user of the virtual machine.
Another advantage of the invention is that both the virtual operating system and the host operating system may be (but need not be) unmodified, commodity operating systems.
In a xe2x80x9cbrokeredxe2x80x9d embodiment of the invention, the operational steps of issuing the requests for access to selected, separately processable file portions, and separately transferring from the provider system each selected file portion from the provider system to the user system all take place via a broker system to which the user system and the provider system are both connected via a network. In a multi-provider configuration of the invention, the broker system selects one of a plurality of available provider systems from which to transfer the requested, separately processable file portions. Here, xe2x80x9cavailablexe2x80x9d provider systems are those provider systems actively connnected to the network.
In order to deal with the possibility that an active provider may become inactive, that is, no longer connected to the network or otherwise not able to transfer files, the broker system preferably selects as an initial provider, which is also initially a current provider, one of the plurality of available provider systems, from which processable file portions are initially transferred to the user system. Processable file portions requested by the user system are then downloaded to the user system from the current provider as long as the current provider remains actively connected to the network, but whenever the current provider ceases to be actively connected to the network, the broker system selects a different one of the providers as the current provider and continues to select new provider systems as long as needed as current ones become inactive or otherwise unavailable.
The broker system may also include various software modules that monitor and quantitatively measure access requests issued by the user system and completed transfers to the user system of file portions. These modules may then also compile billing information (and/or simple statistical information for reporting purposes) as a predetermined function of the measured access requests and completed transfers. The user may then be billed according to the compiled billing information. The billing function may also be used to determine how much to pay providers for user-requested access to their stored files.